package com.xyazm.order.service;

import com.xyazm.common.enums.OrderStatusChangeEnum;
import com.xyazm.fulfill.domain.event.OrderDeliveredEvent;
import com.xyazm.fulfill.domain.event.OrderOutStockEvent;
import com.xyazm.fulfill.domain.event.OrderSignedEvent;

/**
 * 触发订单事件
 * @Author: xuyou
 * @Date: 2022/7/21 17:31
 */
public interface IOrderTriggerService {

    /**
     * 触发订单发货出库事件 2.0
     * @author xuyou
     * @date: 2022/7/21 17:40
     */
    void triggerOrderOutStockWmsEvent(OrderStatusChangeEnum orderStatusChangeEnum,
                                      OrderOutStockEvent event);
    /**
     * 触发订单配送事件 2.0
     * @author xuyou
     * @date: 2022/7/21 17:39
     */
    void triggerOrderDeliveredWmsEvent(OrderStatusChangeEnum orderStatusChangeEnum,
                                       OrderDeliveredEvent event);
    /**
     * 触发订单签收事件 2.0
     * @author xuyou
     * @date: 2022/7/21 17:39
     */
    void triggerOrderSignedWmsEvent(OrderStatusChangeEnum orderStatusChangeEnum,
                                    OrderSignedEvent event);

    /**
     * 触发接收订单履约 2.0
     * @author xuyou
     * 2022/8/15 0015 22:00
     */
    void triggerReceiveOrderFulFill(String orderId, String fulfillException, String wmsException, String tmsException);

    /**
     * 触发订单已支付事件 ok
     * @author xuyou
     * 2022/8/15 0015 21:58
     * @param orderId
    */
    void triggerOrderPaidEvent(String orderId);

}
